;(function($,win,doc,unde){
    $.fn.pageFun = function(options){
        var defaults = {
            pageDiv   : $(this).find(".pageDiv"),
            pageDivLi : $(this).find(".pageDiv li"),
            page      : $(this).find(".page"),
            pageMenu  : $(this).find(".pageMenu"),
            pageMenuLi: $(this).find(".pageDiv li"),
            firstPage : $(this).find(".firstPage"),
            prevPage  : $(this).find(".prevPage"),
            pageNum   : $(this).find(".pageNum"),
            nextPage  : $(this).find(".nextPage"),
            pageObj   : $(this).find(".pageObj"),
            pageObjLi : $(this).find(".pageObj li"),
            lastPage  : $(this).find(".lastPage"),
            keuInput  : $(this).find(".keuInput"),
            btnSure   : $(this).find(".btnSure"),
            notContent: $(this).find(".notContent"),
            totalPage : $(this).find(".totalPage"),
            pNum      : 1,
            lastNum   : 0,
            cacheNum  : 1,
            min       : 0,
            res       :null
        };
        var opts = $.extend({},defaults,options);

        var Method = {
            init : function(){
                Method.getData(); /*请求接口获得数据*/
                Method.handleEvent(); /*事件处理*/
            },

            getData : function(){

                 $.getJSON(opts.interFace,function(data){
                    if(data.status == "ok"){
                        opts.res = data.datas;
                        if((opts.res.length <= opts.displayCount)&&(opts.res.length > 0)){
                            opts.displayCount = opts.res.length;
                            opts.lastPage.addClass("disabled");
                            opts.nextPage.addClass("disabled");
                        }else if(opts.res.length == 0){
                            opts.notContent.removeClass("hide");

                            opts.firstPage.addClass("disabled");
                            opts.prevPage.addClass("disabled");
                            opts.lastPage.addClass("disabled");
                            opts.nextPage.addClass("disabled");
                            opts.firstPage.off("click");
                            opts.lastPage.off("click");
                            opts.prevPage.off("click");
                            opts.nextPage.off("click");
                            return;
                        }
                        else{

                            opts.pNum = Math.ceil(opts.res.length / opts.displayCount);
                        }

                        opts.notContent.addClass("hide");
                        for (var i = 0; i < opts.displayCount; i++) {
                            opts.pageDiv.append(opts.dataFun(opts.res[i]));
                        }

                        for (var i = 0; i < opts.pNum; i++) {
                            opts.pageObj.append(opts.pageFun(i+1));
                        }

                        opts.firstPage.addClass("disabled");
                        opts.prevPage.addClass("disabled");
                        opts.pageObj.find("li:first-child").addClass("active");
                        opts.totalPage.text(opts.pNum);
                        Method.showPageindex(0, opts.maxPage, 0);
                    }
                    else{

                    }
                  });
            },
            handleEvent : function(){
                $(window).on('scroll',function(e) {
                     if(opts.cacheNum == opts.pNum){
                         return false;
                     }
                     if ($(document).scrollTop() >= $(document).height() - $(window).height()) {
                         $('.pageBox .loading').show();
                         opts.cacheNum++
                         if(opts.cacheNum == opts.pNum){
                             setTimeout(function(){
                                 Method.xhhtml(opts.cacheNum,opts.res.length);
                                 $('.pageBox .loading').hide();
                                 $('.no_data').show();
                             },320)
                         }else{
                             setTimeout(function(){
                                 Method.xhhtml(opts.cacheNum,opts.cacheNum*opts.displayCount);
                                 $('.pageBox .loading').hide();
                             },300);
                         }
                         Method.showPageindex(0, opts.maxPage, opts.cacheNum);
                     }
                 });
            },
            xhhtml : function(index,count){
                for (var i = ((index-1)*opts.displayCount); i < count; i++) {
                    opts.pageDiv.append(opts.dataFun(opts.res[i]));
                }
                opts.keuInput.val(index);
            },
            showPageindex : function(min, max, index) {
                if (index <= Math.ceil(max / 2)) {
                    min = 0;
                    max = max;
                }
                else if (opts.pNum - index < Math.ceil(max / 2)) {
                    min = opts.pNum - max;
                    max = opts.pNum ;
                }
             else {

                    min = Math.round(index - max / 2)-1;
                    max = Math.round(Number(index) + Number(max / 2))-1;
                }
                $(".pageObj li").hide();
                for (var i = min; i < max; i++) {
                    $(".pageObj li").eq(i).show();
                }
            }
        }

        Method.init();
    }
})(jQuery,window,document,undefined)